;声明引用的函数索引
Include windows.inc
Include user32.inc
Include kernel32.inc
Include gdi32.inc

;声明引用的函数库
includelib gdi32.lib
IncludeLib user32.lib
IncludeLib kernel32.lib

;申明宏
include macro.asm

;定义常量&幻数
IDA_MAIN         EQU 2000
IDI_ICON         EQU 29874
IDI_ICON_SM      EQU 101
WM_EX_MyStyle    EQU WS_EX_OVERLAPPEDWINDOW+WS_EX_CONTROLPARENT;+WS_EX_APPWINDOW+WS_EX_DLGMODALFRAME;(dwExStyle) 指定窗口的扩展风格
;该常量用于注册默认窗口扩展风格
;该常量可以是下列值的组合：
;WS_EX_NODRAG:防止窗口被移动
;WS_EX_ACCEPTFILES：指定以该风格创建的窗口接受一个拖拽文件。
;WS_EX_APPWINDOW：当窗口可见时，将一个顶层窗口放置到任务条上。
;WS_EX_CLIENTEDGE：指定窗口有一个带阴影的边界。
;WS_EX_CONTEXTHELP：在窗口的标题条包含一个问号标志。当用户点击了问号时，鼠标光标变为一个问号的指针、如果点击了一个子窗口，则子窗口接收到WM_HELP消息。
;子窗口应该将这个消息传递给父窗口过程，父窗口再通过HELP_WM_HELP命令调用WinHelp函数。这个Help应用程序显示一个包含子窗口帮助信息的弹出式窗口。 
;WS_EX_CONTEXTHELP不能与WS_MAXIMIZEBOX和WS_MINIMIZEBOX同时使用。
;WS_EX_CONTROLPARENT：允许用户使用Tab键在窗口的子窗口间搜索。
;WS_EX_DLGMODALFRAME：创建一个带双边的窗口；该窗口可以在dwStyle中指定WS_CAPTION风格来创建一个标题栏。
;WS_EX_LEFT：窗口具有左对齐属性，这是缺省设置的。
;WS_EX_LEFTSCROLLBAR：如果外壳语言是如Hebrew，Arabic，或其他支持reading order alignment的语言，则标题条（如果存在）则在客户区的左部分。
;若是其他语言，在该风格被忽略并且不作为错误处理。
;WS_EX_LTRREADING：窗口文本以LEFT到RIGHT（自左向右）属性的顺序显示。这是缺省设置的。
;WS_EX_MDICHILD：创建一个MDI子窗口。
;WS_EX_NOPATARENTNOTIFY：指明以这个风格创建的窗口在被创建和销毁时不向父窗口发送WM_PARENTNOTFY消息。
;WS_EX_OVERLAPPEDWINDOW：WS_EX_CLIENTEDGE和WS_EX_WINDOWEDGE的组合。
;WS_EX_PALETTEWINDOW：WS_EX_WINDOWEDGE, WS_EX_TOOLWINDOW和WS_WX_TOPMOST风格的组合WS_EX_RIGHT:窗口具有普通的右对齐属性，这依赖于窗口类。
;只有在外壳语言是如Hebrew,Arabic或其他支持读顺序对齐（reading order alignment）的语言时该风格才有效，否则，忽略该标志并且不作为错误处理。
;WS_EX_RIGHTSCROLLBAR：垂直滚动条在窗口的右边界。这是缺省设置的。
;WS_EX_RTLREADING：如果外壳语言是如Hebrew，Arabic，或其他支持读顺序对齐（reading order alignment）的语言，则窗口文本是一自左向右）RIGHT到LEFT顺序的读出顺序。
;若是其他语言，在该风格被忽略并且不作为错误处理。
;WS_EX_STATICEDGE：为不接受用户输入的项创建一个3一维边界风格
;WS_EX_TOOLWINDOW：创建工具窗口，即窗口是一个游动的工具条。工具窗口的标题条比一般窗口的标题条短，并且窗口标题以小字体显示。
;工具窗口不在任务栏里显示，当用户按下alt+Tab键时工具窗口不在对话框里显示。
;如果工具窗口有一个系统菜单，它的图标也不会显示在标题栏里，但是，可以通过点击鼠标右键或Alt+Space来显示菜单。
;WS_EX_TOPMOST：指明以该风格创建的窗口应放置在所有非最高层窗口的上面并且停留在其L，即使窗口未被激活。使用函数SetWindowPos来设置和移去这个风格。
;WS_EX_TRANSPARENT：指定以这个风格创建的窗口在窗口下的同属窗口已重画时，该窗口才可以重画。
WM_EX_MyWinStyle EQU WS_MAXIMIZE+WS_OVERLAPPEDWINDOW+WS_BORDER
;该常量用于注册默认窗口风格
;该常量可以是下列值的组合：
;WS_BORDER：创建一个带边框的窗口。
;WS_CAPTION：创建一个有标题框的窗口（包括WS_BODER风格）。
;WS_CHILD：创建一个子窗口。这个风格不能与WS_POPUP风格合用。
;WS_CHILDWINDOW：与WS_CHILD相同。
;WS_CLIPCHILDREN：当在父窗口内绘图时，排除子窗口区域。在创建父窗口时使用这个风格。
;WS_CLIPSIBLINGS：排除子窗口之间的相对区域，也就是，当一个特定的窗口接收到WM_PAINT消息时，WS_CLIPSIBLINGS 风格将所有层叠窗口排除在绘图之外，只重绘指定的子窗口。
;如果未指定WS_CLIPSIBLINGS风格，并且子窗口是层叠的，则在重绘子窗口的客户区时，就会重绘邻近的子窗口。
;WS_DISABLED：创建一个初始状态为禁止的子窗口。一个禁止状态的窗口不能接受来自用户的输入信息。
;WS_DLGFRAME：创建一个带对话框边框风格的窗口。这种风格的窗口不能带标题条。
;WS_GROUP：指定一组控制的第一个控制。
;这个控制组由第一个控制和随后定义的控制组成，自第二个控制开始每个控制，具有WS_GROUP风格，每个组的第一个控制带有WS_TABSTOP风格，从而使用户可以在组间移动。
;用户随后可以使用光标在组内的控制间改变键盘焦点。
;WS_HSCROLL：创建一个有水平滚动条的窗口。
;WS_ICONIC：创建一个初始状态为最小化状态的窗口。与WS_MINIMIZE风格相同。
;WS_MAXIMIZE：创建一个初始状态为最大化状态的窗口。
;WS_MAXIMIZEBOX：创建一个具有最大化按钮的窗口。该风格不能与WS_EX_CONTEXTHELP风格同时出现，同时必须指定WS_SYSMENU风格。
;WS_OVERLAPPED：产生一个层叠的窗口。一个层叠的窗口有一个标题条和一个边框。与WS_TILED风格相同。
;WS_OVERLAPPEDWINDOW：创建一个具有WS_OVERLAPPED，WS_CAPTION，WS_SYSMENU WS_THICKFRAME，WS_MINIMIZEBOX，WS_MAXIMIZEBOX风格的层叠窗口，与WS_TILEDWINDOW风格相同。
;WS_POPUP：创建一个弹出式窗口。该风格不能与WS_CHILD风格同时使用。
;WS_POPUPWINDOW：创建一个具有WS_BORDER，WS_POPUP,WS_SYSMENU风格的窗口，WS_CAPTION和WS_POPUPWINDOW必须同时设定才能使窗口某单可见。
;WS_SIZEBOX：创建一个可调边框的窗口，与WS_THICKFRAME风格相同。
;WS_SYSMENU：创建一个在标题条上带有窗口菜单的窗口，必须同时设定WS_CAPTION风格。
;WS_TABSTOP：创建一个控制，这个控制在用户按下Tab键时可以获得键盘焦点。按下Tab键后使键盘焦点转移到下一具有WS_TABSTOP风格的控制。
;WS_THICKFRAME：创建一个具有可调边框的窗口，与WS_SIZEBOX风格相同。
;WS_TILED：产生一个层叠的窗口。一个层叠的窗口有一个标题和一个边框。与WS_OVERLAPPED风格相同。
;WS_TILEDWINDOW:创建一个具有WS_OVERLAPPED，WS_CAPTION，WS_SYSMENU， WS_THICKFRAME，WS_MINIMIZEBOX，WS_MAXIMIZEBOX风格的层叠窗口。与WS_OVERLAPPEDWINDOW风格相同。
;WS_VISIBLE：创建一个初始状态为可见的窗口。
;WS_VSCROLL：创建一个有垂直滚动条的窗口。
F_TOOLBAR        EQU 00000001b
F_TOOLBARTEXT    EQU 00000010b
F_INPUTBAR       EQU 00000100b
F_STATUSBAR      EQU 00001000b

;结构定义

;声明函数原型
    WinMain PROTO hInstance:DWORD,hPrevInstance:DWORD,szCmdLine:DWORD,iCmdShow:DWORD
	WndProc PROTO hWnd:HWND,uInt:DWORD,wParam:DWORD,lParam:DWORD
	DrawBezier PROTO hDC:HDC,lpApt:DWORD
	Str_lenght PROTO lpString:PTR BYTE;在EAX中返回字符串的长度(不包含结尾的空字节)

EXTERNDEF szTop:BYTE,szUnd:BYTE,szFormat:BYTE,szYes:BYTE,szNo:BYTE,szDown:BYTE,szUp:BYTE,szSpace:BYTE
EXTERNDEF cxClientMax:SDWORD,cyClientMax:SDWORD,cxClient:SDWORD,cyClient:SDWORD,cxChar:SDWORD,cyChar:SDWORD,cLinesMax:SDWORD,cLines:SDWORD,rectScroll:RECT

Include MyDATA.inc;数据文件 优先级1
Include MySubprogram.inc;子程序文件 优先级2
Include MyWinPorc.inc;消息循环处理文件 优先级3